<!DOCTYPE html>
<html lang="ja">

<head>
  <meta charset="utf-8">
  <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
  <meta http-equiv="Content-Style-Type" content="text/css">
  <script src='../bbs.js'></script>

  <!-- Global site tag (gtag.js) - Google Analytics -->
  <script async src="https://www.googletagmanager.com/gtag/js?id=UA-120820034-1"></script>

  <link href="../bbs.css" type="text/css" rel="stylesheet">
  <link rel="shortcut icon" href="/favicon.ico">
  <title>[要望]キーマクロの指定回数実行 | サクラエディタ過去ログ</title>
</head>
<body>
<ul class="side">
        <a href="./" class="toindex">◀一般トップへ</a>
        <li><div class="list-title">
    <span class="no">3386</span>
    <a class="thread-title" href="3386.html#3386">[要望]キーマクロの指定回数実行</a></div>
    <ul><li><div class="list-title">
    <span class="no">3391</span>
    <a class="thread-title" href="3386.html#3391">Re:[要望]キーマクロの指定回数実行</a></div>
    <ul><li><div class="list-title">
    <span class="no">3396</span>
    <a class="thread-title" href="3386.html#3396">Re2:[要望]キーマクロの指定回数実行</a></div>
    <ul><li><div class="list-title">
    <span class="no">3416</span>
    <a class="thread-title" href="3386.html#3416">Re3:[要望]キーマクロの指定回数実行</a></div>
    <ul><li><div class="list-title">
    <span class="no">3417</span>
    <a class="thread-title" href="3386.html#3417">Re4:[要望]キーマクロの指定回数実行</a></div>
    </li></ul></li></ul></li><li><div class="list-title">
    <span class="no">3412</span>
    <a class="thread-title" href="3386.html#3412">Re2:[要望]キーマクロの指定回数実行</a></div>
    <ul><li><div class="list-title">
    <span class="no">3418</span>
    <a class="thread-title" href="3386.html#3418">Re3:[要望]キーマクロの指定回数実行</a></div>
    </li><li><div class="list-title">
    <span class="no">3419</span>
    <a class="thread-title" href="3386.html#3419">Re3:[要望]キーマクロの指定回数実行</a></div>
    <ul><li><div class="list-title">
    <span class="no">3426</span>
    <a class="thread-title" href="3386.html#3426">Re4:[要望]キーマクロの指定回数実行</a></div>
    <ul><li><div class="list-title">
    <span class="no">3430</span>
    <a class="thread-title" href="3386.html#3430">Re5:[要望]キーマクロの指定回数実行</a></div>
    </li><li><div class="list-title">
    <span class="no">3433</span>
    <a class="thread-title" href="3386.html#3433">Re5:[要望]キーマクロの指定回数実行</a></div>
    </li></ul></li><li><div class="list-title">
    <span class="no">3434</span>
    <a class="thread-title" href="3386.html#3434">Re4:[要望]キーマクロの指定回数実行</a></div>
    <ul><li><div class="list-title">
    <span class="no">3437</span>
    <a class="thread-title" href="3386.html#3437">Re5:[要望]キーマクロの指定回数実行</a></div>
    </li></ul></li></ul></li></ul></li></ul></li></ul></li>
    </ul><ul class="main"><li><section><h1 id=3386>
    <span class="no">[3386]</span>
    <a class="thread-title" href="#3386">[要望]キーマクロの指定回数実行</a>
    <span class="author">kaz</span>
    <time datetime="2003-10-15T22:45:24">2003年10月15日 22:45</time></h1>
    <div class="body">はじめまして。<br>最近Mifesから乗り換えた者です。<br>とても素晴らしいエディタに出会えて感動しています。<br>もうMifesにはきっと戻らないでしょう。<br>で、Mifesにあった機能で1つ欲しい機能があるのですが<br>それがキーマクロの指定回数実行です。<br>キーマクロを記録した後に簡単な操作でそれを指定回数実行できると<br>嬉しいのですが。<br>是非ご検討をお願いします。<br></div></section>
    <ul><li><section><h1 id=3391>
    <span class="no">[3391]</span>
    <a class="thread-title" href="#3391">Re:[要望]キーマクロの指定回数実行</a>
    <span class="author">wmlhq</span>
    <time datetime="2003-10-16T11:22:15">2003年10月16日 11:22</time></h1>
    <div class="body">ShiftとCtrlを押しながらLを指定回数連打するか、またはマクロをファイルに保存した後、複数回実行されるように編集したものを開いて呼び出す。</div></section>
    <ul><li><section><h1 id=3396>
    <span class="no">[3396]</span>
    <a class="thread-title" href="#3396">Re2:[要望]キーマクロの指定回数実行</a>
    <span class="author">ｔｙ</span>
    <time datetime="2003-10-17T09:26:07">2003年10月17日 09:26</time></h1>
    <div class="body">▼ wmlhqさん<br>&gt; ShiftとCtrlを押しながらLを指定回数連打するか、またはマクロをファイルに保存した後、複数回実行されるように編集したものを開いて呼び出す。<br><br>おっしゃるとおりですが、例えば、一回のみの作業で1000回の連続的な作業、という場合は、面倒というか、手間が増えるのが厄介です。<br>良かったら、ご検討ください。</div></section>
    <ul><li><section><h1 id=3416>
    <span class="no">[3416]</span>
    <a class="thread-title" href="#3416">Re3:[要望]キーマクロの指定回数実行</a>
    <span class="author">げんた</span>
    <time datetime="2003-10-18T01:04:51">2003年10月18日 01:04</time></h1>
    <div class="body">&gt;おっしゃるとおりですが、例えば、一回のみの作業で1000回の連続的な作業、<br>面倒でなければPPA等でループを記述する方法も検討してみてください．<br><br>面倒といわれればそれまでですが(汗<br>ループ回数をPopupで入力させるようなことはPPAからできたっけなぁ．<br></div></section>
    <ul><li><section><h1 id=3417>
    <span class="no">[3417]</span>
    <a class="thread-title" href="#3417">Re4:[要望]キーマクロの指定回数実行</a>
    <span class="author">すい</span>
    <time datetime="2003-10-18T05:49:35">2003年10月18日 05:49</time></h1>
    <div class="body">&gt;ループ回数をPopupで入力させるようなことはPPAからできたっけなぁ．<br><br>----------<br>// 実行には PPA.DLL が必須です。sakura.exe と同じフォルダに PPA.DLL を入れておいてください。<br>// マクロファイルの拡張子は .PPA でなくてはなりません。<br><br>// マクロを実行する回数を入力するダイアログを出し、<br>// そこで指定された回数マクロを実行する。<br><br>var<br>&#9;cnt,max:Integer;&#9;// 整数数値型変数 cnt と max を用意する<br>begin<br><br>&#9;max := StrToInt( InputBox('マクロ実行','マクロを実行する回数を入力して下さい。','') );<br><br>&#9;for cnt := 1 to max do&#9;begin&#9;// {<br><br>&#9;&#9;// ここに指定回数実行したい内容を書き込む<br>&#9;&#9;S_InsText( IntToStr(cnt) + '回目の文字列出力です。');<br>&#9;&#9;S_Char(13);&#9;&#9;// 改行する<br><br>&#9;end;&#9;// }<br>end;<br>----------<br></div></section>
    </li></ul></li></ul></li><li><section><h1 id=3412>
    <span class="no">[3412]</span>
    <a class="thread-title" href="#3412">Re2:[要望]キーマクロの指定回数実行</a>
    <span class="author">kaz</span>
    <time datetime="2003-10-17T23:43:24">2003年10月17日 23:43</time></h1>
    <div class="body">▼ wmlhqさん<br>&gt; ShiftとCtrlを押しながらLを指定回数連打するか、またはマクロをファイルに保存した後、複数回実行されるように編集したものを開いて呼び出す。<br>そうですね(笑)<br>今はそのようにやってるんですが、ちょっと面倒だったもので・・・。<br><br>ついでの話ですが、キーマクロの実行中にエラーやEOFに達したら<br>実行を中断できると嬉しいです。<br>良く私はある文字を検索して、その何バイトか後ろの文字を削除する<br>と言うようなキーマクロをひたすら実行することがあるのですが<br>Shift+Ctrl+Lを連打しすぎて消してはいけない文字を大量に消してしまうことが<br>あるんですよ。<br>そこで検索にヒットしなかったときとかEOFに達したときにマクロが中断してくれると<br>いいなと思うわけです。<br>ちなみにこれもMifesがこういう仕様なのでっていうのが多分にあるのですが・・・</div></section>
    <ul><li><section><h1 id=3418>
    <span class="no">[3418]</span>
    <a class="thread-title" href="#3418">Re3:[要望]キーマクロの指定回数実行</a>
    <span class="author">すい</span>
    <time datetime="2003-10-18T06:54:32">2003年10月18日 06:54</time></h1>
    <div class="body">&gt;EOFに達したら<br>&gt;実行を中断できると嬉しいです。<br><br>PPAマクロで一応可能ですけど面倒ですな。<br>----------<br>// 実行には PPA.DLL が必須です。sakura.exe と同じフォルダに PPA.DLL を入れておいてください。<br>// マクロファイルの拡張子は .PPA でなくてはなりません。<br>// TAB=4<br><br>// ファイル終端に達した場合に処理を終了するサンプル<br><br>// マクロ実行開始時にカーソルがある行から、行末の１文字を削除していく。<br>// 始めに実行する回数を入力するダイアログを出し、そこで指定された行数だけ削除処理をする。<br>// ただし、ファイル終端に到達したら、即、マクロの処理を中断する。<br><br>var<br>&#9;cnt,max:Integer;&#9;// 整数数値型変数 cnt と max を用意する<br>&#9;// csry,eol:Integer;&#9;// 整数数値型変数 csry と eol を用意する<br>begin<br><br>&#9;max := StrToInt( InputBox('マクロ実行','マクロを実行する回数を入力して下さい。','') );<br><br>&#9;for cnt := 1 to max do&#9;begin&#9;// {<br><br>&#9;&#9;// // ファイルの行数情報の取得方法のサンプル<br>&#9;&#9;// eol := S_GetLineCount(0);&#9;&#9;&#9;&#9;&#9;&#9;// ← ファイルの行数(改行単位の行数)を取得する方法<br>&#9;&#9;// csry := StrToInt( S_ExpandParameter('$y') );&#9;// ← カーソルがある行番号(改行単位の行番号)を取得する方法<br>&#9;&#9;// MessageBox( '現在の行番号'+IntToStr(csry) + ' / 全行数'+IntToStr(eol) , IntToStr(cnt)+'回目の実行です('+IntToStr(max)+'回実行予定)' , 0 );&#9;// for DEBUG<br><br>&#9;&#9;// 実際の「ファイル終端に到達したら中断する処理」の記述は↓コレ<br>&#9;&#9;if ( StrToInt(S_ExpandParameter('$y'))  &gt;  S_GetLineCount(0) ) then&#9;begin<br>&#9;&#9;&#9;MessageBox( 'ファイル末尾に到達したためマクロを終了します。' , 'マクロ終了' , 0 );<br>&#9;&#9;&#9;Exit;<br>&#9;&#9;end;<br><br>&#9;&#9;// 実際におこなう処理内容<br>&#9;&#9;S_GoLineEnd(0);&#9;&#9;// 行末に移動(折り返し単位)<br>&#9;&#9;S_DeleteBack(0);&#9;// カーソル前を削除<br>&#9;&#9;S_Down(0);&#9;&#9;&#9;// カーソル下移動<br><br>&#9;end;&#9;// }<br>end;<br>----------<br><br>&gt;ちなみにこれもMifesがこういう仕様なのでっていうのが多分にあるのですが・・・<br>なつかしい。<br></div></section>
    </li><li><section><h1 id=3419>
    <span class="no">[3419]</span>
    <a class="thread-title" href="#3419">Re3:[要望]キーマクロの指定回数実行</a>
    <span class="author">すい</span>
    <time datetime="2003-10-18T07:01:43">2003年10月18日 07:01</time></h1>
    <div class="body">&gt;良く私はある文字を検索して、その何バイトか後ろの文字を削除する<br>&gt;と言うようなキーマクロをひたすら実行することがあるのですが<br>&gt;Shift+Ctrl+Lを連打しすぎて消してはいけない文字を大量に消してしまうことが<br>&gt;あるんですよ。<br>&gt;そこで検索にヒットしなかったときとかEOFに達したときにマクロが中断してくれると<br>&gt;いいなと思うわけです。<br><br>----------<br>// 実行には PPA.DLL が必須です。sakura.exe と同じフォルダに PPA.DLL を入れておいてください。<br>// マクロファイルの拡張子は .PPA でなくてはなりません。<br>// TAB=4<br><br>// 文字列 abc を検索し、見つかった abc から３文字後ろへ移動して２文字を削除する。<br>// 始めに実行する回数を入力するダイアログを出し、そこで指定された回数だけ削除処理をする。<br>// ただし、文字列 abc が見つからなかったら、指定回数に達していなくてもマクロ処理を終了する。<br><br>var<br>&#9;cnt,max:Integer;&#9;// 整数数値型変数 cnt と max を用意する<br>&#9;find:Integer;&#9;&#9;// 整数数値型変数 find を用意する<br>begin<br><br>&#9;max := StrToInt( InputBox('マクロ実行','マクロを実行する回数を入力して下さい。','') );<br><br>&#9;find := 0;&#9;// 実際に処理した回数 = 0 (リセット)<br>&#9;for cnt := 1 to max do&#9;begin&#9;// {<br><br>&#9;&#9;S_SearchNext('abc', 16);&#9;// 文字列 abc を検索<br><br>&#9;&#9;if ( S_GetSelectedString(0) = '' ) then&#9;begin<br>&#9;&#9;&#9;// 検索文字列が見つからなかった<br>&#9;&#9;&#9;MessageBox( '検索文字列が見つかりませんでした。処理を中断します。' , 'マクロ終了',0);<br>&#9;&#9;&#9;Break;<br>&#9;&#9;end;<br><br>&#9;&#9;find := find +1;&#9;// 処理回数をカウント。実際に処理した回数を +1 しておく。<br><br>&#9;&#9;// 3文字後ろへ移動して、2文字削除する<br>&#9;&#9;S_Right(0);&#9;&#9;// カーソル右移動<br>&#9;&#9;S_Right(0);&#9;&#9;// カーソル右移動<br>&#9;&#9;S_Right(0);&#9;&#9;// カーソル右移動<br>&#9;&#9;S_Delete(0);&#9;// 削除<br>&#9;&#9;S_Delete(0);&#9;// 削除<br><br>&#9;end;&#9;// }<br><br>&#9;MessageBox( IntToStr(find) + '箇所 処理をおこないました','まっくろ終了',0 );<br><br>end;<br>----------<br></div></section>
    <ul><li><section><h1 id=3426>
    <span class="no">[3426]</span>
    <a class="thread-title" href="#3426">Re4:[要望]キーマクロの指定回数実行</a>
    <span class="author">kaz</span>
    <time datetime="2003-10-20T13:25:07">2003年10月20日 13:25</time></h1>
    <div class="body">▼ すいさん<br>サンプルのマクロまで作っていただき、ありがとうございました。<br>これを参考にやってみたいと思います。<br>ちなみにPPAマクロからキーマクロを呼び出すなんてことはできないでしょうか？<br>質問ばかりで済みません。<br>お暇なときにでもお教えください。<br></div></section>
    <ul><li><section><h1 id=3430>
    <span class="no">[3430]</span>
    <a class="thread-title" href="#3430">Re5:[要望]キーマクロの指定回数実行</a>
    <span class="author">げんた</span>
    <time datetime="2003-10-21T02:10:38">2003年10月21日 02:10</time></h1>
    <div class="body">&gt;ちなみにPPAマクロからキーマクロを呼び出すなんてことはできないでしょうか？<br>基本的にキーマクロはそのままPPAマクロとしても動くようになっていると思います．<br></div></section>
    </li><li><section><h1 id=3433>
    <span class="no">[3433]</span>
    <a class="thread-title" href="#3433">Re5:[要望]キーマクロの指定回数実行</a>
    <span class="author">すい</span>
    <time datetime="2003-10-21T03:41:24">2003年10月21日 03:41</time></h1>
    <div class="body">&gt;ちなみにPPAマクロからキーマクロを呼び出すなんてことはできないでしょうか？<br><br>PPAマクロ中から他の PPAマクロや、拡張子.MAC のキーボードマクロを<br>サブルーチン呼び出しのような感じで呼び出す事はできません。<br>同様に他のマクロファイルへ実行を移すような事も一切できません。<br><br>サンプル中の<br>「// 3文字後ろへ移動して、2文字削除する」以降の場所を<br>いちいち書き換えて利用するしか手はないかと。<br><br>良く書き換えて使いそうなら、このマクロのファイルを<br>「ツール」→「お気に入りの設定」で“お気に入り”にでも<br>チェックして、「最近使ったファイル」から すぐ簡単に<br>編集できるようにしておくとか。面倒だと思いますけど。<br><br>ちなみについでに、PPAマクロ中では関数などを定義する事もできません。<br><br>あくまで単一のマクロファイル内の記述を、上から下へ一直線に処理するのみです。<br>条件付きループや条件分岐 程度の制御構文があるだけで。<br></div></section>
    </li></ul></li><li><section><h1 id=3434>
    <span class="no">[3434]</span>
    <a class="thread-title" href="#3434">Re4:[要望]キーマクロの指定回数実行</a>
    <span class="author">すい</span>
    <time datetime="2003-10-21T04:02:27">2003年10月21日 04:02</time></h1>
    <div class="body">&gt;&gt;良く私はある文字を検索して、その何バイトか後ろの文字を削除する<br>&gt;&gt;と言うようなキーマクロをひたすら実行することがあるのですが<br>&gt;&gt;Shift+Ctrl+Lを連打しすぎて消してはいけない文字を大量に消してしまうことが<br>&gt;&gt;あるんですよ。<br>&gt;&gt;そこで検索にヒットしなかったときとかEOFに達したときにマクロが中断してくれると<br>&gt;&gt;いいなと思うわけです。<br><br>ちなみに「検索対象文字列のすぐ後ろに改行がある場合もある」<br>という時には、このようなマクロじゃないと駄目ですけど、改行が<br>来ないのなら正規表現の置換使った方が速いし楽ですよ。<br><br>置換ダイアログにて<br>・置換前：(abc..)..<br>・置換後：$1<br>・正規表現 ←チェックON<br><br>の置換で同じ処理ができます。<br># 置換前の '.'(半角のピリオド(小数点))の数が削除したりする文字の数になります。<br><br>このマクロを使う必要があるとしたら、処理対象のテキストが<br><br>-----<br>abc<br>defg<br>-----<br>↓処理後<br>-----<br>abc<br>dg<br>-----<br><br>みたいに、abc の後ろに改行が来る場合にも(次の行を)削除処理<br>しないとならない場合くらいでしょう。<br></div></section>
    <ul><li><section><h1 id=3437>
    <span class="no">[3437]</span>
    <a class="thread-title" href="#3437">Re5:[要望]キーマクロの指定回数実行</a>
    <span class="author">kaz</span>
    <time datetime="2003-10-21T22:54:01">2003年10月21日 22:54</time></h1>
    <div class="body">すいさん、げんたさん<br>色々お教えいただきありがとうございました。<br>とりあえず教えていただいた方法をその時々で使ってやっていこうと思います。<br>これからもよろしくお願いします。<br></div></section>
    </li></ul></li></ul></li></ul></li></ul></li></ul></li></ul></body></html>